package org.jeecg.modules.FinanceModule.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.FinanceModule.entity.*;
import org.jeecg.modules.zonglzp.entity.User;
import org.jeecg.modules.zonglzp.entity.store;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.Map;

@Component
public interface FinanceMapper {


    //查询客户个人的订单
    IPage<BusinessWaterEntity> getBusinessWaterlist(Page<BusinessWaterEntity> page, @Param("userId") String userId);


    //查询客户个人充值明细
    IPage<FinancialWaterEntity> getFinanceWaterlist(Page<FinancialWaterEntity> page, @Param("userId") String userId, @Param("date") String date,@Param("starttime") String starttime,@Param("endtime") String endtime);

    //撤回这条充值哈哈哈哈
    int rollbackMoney(@Param("id") int id);

    //查询之前已有的余额
    String getoldmoney(@Param("userId") int userId);

    //更改原有的余额
    void updateAccountBalance(@Param("userId") int userId, @Param("valueOf") String valueOf);


    //往财务流水表里插入一条数据
    void insertAddmoneyWater(@Param("userId") int userId, @Param("money") String money, @Param("currentTimeMillis") long currentTimeMillis, @Param("date") Date date);

    //删除掉充值记录
    int deleteaddmoney(@Param("id") int id);

    //查询客户往来，公司和用户表关联的数据
    IPage<CompanyEntity> getcompanyList(Page<CompanyEntity> page, @Param("companyName") String companyName, @Param("aboutPhone") String aboutPhone,@Param("realName") String realName,@Param("status") int status);

    //通过公司代码查询详情
    CompanyEntity getcompanydetail(@Param("companyCode") String companyCode);

    //查询该公司下所有员工的业务流水
    IPage<BusinessWaterEntity> getCompanyBusinessList(Page<BusinessWaterEntity> page, @Param("companyCode") String companyCode,@Param("isAfter") int isAfter);

    //通过公司编码查询该公司下所有员工
    IPage<User> getcompanystaff(Page<User> page, @Param("companyCode") String companyCode);

    //通过公司id查询公司下所有门店
    IPage<store> getcompanystore(Page<store> page, @Param("companyId") String companyId);


    //通过公司id查询公司所有品牌标
    IPage<Map<String, Object>> getcompanylabel(Page<Map<String, Object>> page, @Param("companyId") String companyId);


    //往反冲表中插入一条数据
    void insertrecoiltable(@Param("userId") String userId, @Param("recoilType") int recoilType, @Param("recoilMoney") String recoilMoney, @Param("factoryResponsibility") String factoryResponsibility, @Param("platformResponsibility") String platformResponsibility, @Param("remark") String remark, @Param("date") Date date);

    //在反冲操作后往财务流水表插入一条数据
    void insertcaiwuliushuibyfanchon(@Param("userId") String userId, @Param("recoilMoney") String recoilMoney, @Param("l") long l, @Param("date") Date date, @Param("recoilType") int recoilType,@Param("remark") String remark);

    //查询该客户的开票记录
    IPage<InvoiceEntity> getKehukaipiaoList(Page<InvoiceEntity> page,@Param("userId")  String userId);

    //开票记录页面的公司详情
    CompanyEntity getKehukaipiaoDetail(@Param("userId") String userId);

    //根据userId获取开票金额
    String getInvoicedmoneybyuserId(@Param("userId") String userId,@Param("i")  int i);

    //新增开票记录
    int addInvoice(InvoiceEntity entity);

    //新增对账记录
    int addReconciliationEntity(ReconciliationEntity entity);

    //通过用户id查询月结额度
    String getyuejieedubyid(@Param("parseInt") int parseInt);

    //通过用户id查询他的剩余额度
    String getshengyuedu(@Param("parseInt")  int parseInt);

    //将用户的剩余额度改为月结额度
    void updateyuejietoshengxu(@Param("yuejieedu") String yuejieedu,@Param("shengyuedu")  String shengyuedu,@Param("parseInt")  int parseInt);

    //撤回抵扣额度
    void updatedikouedu(@Param("userId") int userId,@Param("valueOf") String valueOf);

    void updaterealAccountBalance(@Param("parseInt") int parseInt,@Param("valueOf") String valueOf);

    //查询未开票金额
    String getNoEnterMoney(@Param("parseInt") int parseInt);

    //修改用户的未开票金额
    void updateUserNoEnterMoney(@Param("parseInt") int parseInt,@Param("v") double v);
}
